<?php
/**
 * 文件上传
 * Created by PhpStorm.
 * User: LRChang
 * Date: 2018/06/01
 * Time: 10:07
 * Mail: hjklrchang@qq.com
 */

namespace app\adminapi\controller;

use app\base\exception\ParamException;

/**
 * @name【文件上传接口】
 * @baseurl【adminapi/Upload】
 * @file【Upload.php】
 */
class Upload extends Base {
    /**
     ** @name【上传图片】
     * @desc【INPUT FILE NAME=image】
     * @uri【uploadImg】
     * @method【post】
     * @param【
     * image $ file $  $ 文件字段 $ 1 #
     * 】
     * @return【
     * code $ int $ number|1-1 $ 标识1-成功 0-失败#
     * msg $ string $  $ code=0，错误信息#
     * image $ array $ {"pic_name": "cat2.jpg","pic_path": "/upload/20180601/abc0ba81100f61026fd14c4b39cb8dcb.jpg"} $ 图片信息，多图时为数组 #
     * 】
     * @return \think\response\Json
     * @throws ParamException
     */
    public function uploadImg(){
        //halt($_FILES);
        $files = request()->file('image');

        if(!$files){
            throw new ParamException('上传文件image不能为空');
        }

        // 单文件上传
        if(!is_array($files)){
            // 移动到上传目录
            $info = $files->validate(['ext'=>'jpg,jpeg,png,gif'])->move(UPLOAD_PATH);
            if(!$info){
                throw new ParamException($files->getError());
            }

            $originInfo = $info->getInfo();

            $data = [
                'pic_name' => $originInfo['name'],
                'pic_path' => DS . 'upload' . DS . $info->getSaveName(),
            ];

        // 多文件上传
        }else{
            $data = [];

            foreach ($files as $file) {
                // 移动到上传目录
                $info = $file->validate(['ext'=>'jpg,jpeg,png,gif'])->move(UPLOAD_PATH);
                if(!$info){
                    throw new ParamException($file->getError());
                }

                $originInfo = $info->getInfo();

                $data[] = [
                    'pic_name' => $originInfo['name'],
                    'pic_path' => DS . 'upload' . DS . $info->getSaveName(),
                ];
            }
        }

        return $this->retSucc(['image' => $data]);
    }
}